// 基于以下代码完成下面的四个练习
const fp = require('lodash/fp')
// 数据
// horsepower 马力, doller_value 价格, in_stock 库存
const cars = [
    {name: 'Ferrari FF', horsepower: 660, dollar_value: 700000, in_stock: true},
    {name: 'Spyker C12 Zagato', horsepower: 650, dollar_value: 648000, in_stock: false},
    {name: 'Jaguar XKR-S', horsepower: 550, dollar_value: 132000, in_stock: false},
    {name: 'Audi R8', horsepower: 525, dollar_value: 114200, in_stock: false},
    {name: 'Aston Martin One-77', horsepower: 750, dollar_value: 1850000, in_stock: true},
    {name: 'Pagani Huayra', horsepower: 700, dollar_value: 1300000, in_stock: false}
]
// 练习3： 使用帮助函数_average重构averageDollarValue， 使用函数组合的方式实现
let _average = function(xs) {
    // 统计数组总数，除以数组长度，得到平均数
    return fp.reduce(fp.add, 0, xs) / xs.length
} // <- 无须改动
/* 
let averageDollarValue = function(cars) {
    // 得到dollar_value字段组成的数组
    let dollar_values = fp.map(function(car) {
        return car.dollar_value
    }, cars)
    // 返回数组平均数
    return _average(dollar_values)
}
 */

// fp.map第一个参数为处理函数，使用柯里化，等待第二个参数（数值）
const arrMap = fp.map(item => item.dollar_value)
// 定义的这个函数是一个纯函数
let myAverageDollarValue = function(cars) {
    // 先得到cars数组元素中的dollar_value字段，组成新的数组； 使用_average函数得到平均值
    // 返回的是一个函数
    return fp.flowRight(_average, arrMap)
}
// 所以需要执行一次得到返回的函数，赋值给一个变量
let getFirstDataName = myAverageDollarValue()
console.log(getFirstDataName(cars))